This document relates to protocols for communicating over data networks, and more specifically, in at least some examples, to the use of packet coding based protocols for communication over packet switched networks, for instance, over the Internet.
Data communication has benefited from the near-universal use of the Internet Protocol (IP) on the interconnection of networks that form the Internet. The endpoints of communication connections or sessions set-up over the Internet may include servers, which may be in data centers co-located on “backbones” of the Internet, user devices on wired or wireless local area networks, and mobile devices on various generations of cellular telephone technology (e.g. 3G, 4G, LTE). Local area networks may be coupled to high-speed backbones of the Internet via facilities of Internet Service Providers (ISPs), with “last mile” technologies ranging from digital subscriber loop (DSL) to hybrid-fiber coax to all-optical networks. In some cases, networks may include satellite communication links which may have very different delay characteristics than, for example, terrestrial optical networks.
The communications paths that data packets follow in travelling from where they originate to their destination(s) may typically traverse multiple different types of links and/or networks. Each link and/or network may be supported by operating equipment such as servers, buffers, transmission links and the like, and may be characterized by parameters such as capacity, congestion, delay, packet loss, timing of data transfer and the like. Furthermore, transition points, also sometimes referred to as “peering points” between types of networks may impose some restrictions on how data may flow through the networks.
In addition to characteristics that are inherent in the network designs, policy characteristics imposed by network operators may affect how traffic flows across networks. For example, certain types of traffic and/or connections may be prioritized and potentially assigned more resources, while other types of traffic may be throttled or blocked. Assigned resources and/or policies may be variable and may change throughout the day, throughout the year, based on congestion, service agreements and the like.
The vast majority of connection-based or session-based traffic on the Internet today makes use of the Transmission Control Protocol (TCP). TCP is popular at least in part because it generally provides reliable and fair delivery of data. That is, the information that is sent by a sender is eventually received at a receiver and no one sender that adheres to generally adopted fairness aspects of Internet protocols can utilize more than their fair share of the bandwidth on average. However, even though TCP has evolved over the last decades, there are aspects of the protocol that are not well matched to the characteristics, and more particularly to the variability of characteristics, of today's Internet. As examples, primary reliance on retransmission and use of windowing algorithms for congestion control is not always well matched to the real-time requirements and dynamic nature of communication channels that may have relatively rapidly varying characteristics, for example, periodic delay of the delivery of packets or rapidly changing link capacity.
As a result, applications running over today's Internet may be plagued by long delays in transferring large data files, by pauses or interruptions in video or audio streaming, by low audio or picture quality and/or by slow response times for real-time interactive content. These problems may be accompanied by and/or the result of an inefficient use of the underlying network bandwidth due to overly restrictive congestion control and/or to the large numbers of end-to-end packet retransmissions.
One technology that has been proposed to address some of the limitations of TCP for communication over today's Internet is Random Linear Network Coding (RLNC), which involves a combination of using random linear codes for error correction and recoding of packets at intermediate nodes in the network. However, RLNC alone has not provided a complete solution to limitations imposed by network characteristics. Other proposed technologies based on new codes, forward error correction codes, data encryption techniques, and the like, also have not been shown to provide complete solutions. Therefore, there is a need for a new protocol to ensure high-speed uninterrupted delivery of data packets over networks that comprises many different types of equipment, operated by many different operators, over many different types of wired and wireless links.
Also proposed has been the use of the user datagram protocol (UDP), which can speed up data delivery times but at the expense of reliable data delivery. While some users and/or applications may be able to tolerate lost and/or out-of-order data packets at a receiver, network operators have been known to impose policies that limit or block the amount of UDP traffic that may flow over their networks at any given time. These restrictions are at least partially motivated by the fact that many of the current proprietary protocols running over UDP are believed to be unfair, meaning they may consume as much bandwidth and/or network resources as they can in order to deliver their data very quickly.
Thus there is a need for a new protocol that can reliably deliver data packets over today's Internet faster than TCP but not at the expense of fairness.